A wide variety of memory devices can be used to maintain and store data and instructions for various computers and similar systems, including non-volatile memory devices that do not require power to retain information (e.g., EPROM, EEPROM, and Flash memory).
The performance of a memory device can be controlled by programming parameters of memory cells contained in the memory device (e.g., programming gain, threshold voltage, and drain current). Traditionally, memory cell parameters are programmed by applying fixed programming pulses to a memory cell. FIG. 10 is a flow chart illustrating a conventional process 1000 for programming memory cell parameters. In a process block 1005, a fixed programming pulse is applied to a memory cell one or more times. Process 1000 then continues to a decision block 1010, in which it is determined whether the memory cell parameter programmed successfully.
If the memory cell parameter programmed successfully, process 1000 continues to a process block 1020, in which it is determined that the memory cell programmed successfully. If the memory cell parameter did not program successfully, process 1000 continues to a decision block 1015, in which it is determined whether to cease programming. If programming is not ceased, process 1000 continues to process block 1005, in which the fixed programming pulse is applied to the memory cell one or more times. If programming is ceased, process 1000 continues to a process block 1025, in which it is determined that memory cell programming failed.
One concern with programming memory cell parameters is non-deterministic and extended programming time, which is caused by process variations in the manufacture of a memory device. Such process variations may require applying additional fixed programming pulses to one or more memory cells of the memory device, extending the programming time of the memory device.
Another concern with programming memory cell parameters is device stress caused by applying multiple fixed programming pulses to a memory cell in order to program one or more of its parameters; these multiple fixed programming pulses can breakdown various physical layers of the memory cell (e.g., dielectric layers) and lead to memory device failure. Over programming is another concern with programming memory cell parameters, which occurs, e.g., when a memory cell is programmed to a higher threshold voltage than desired after applying multiple fixed programming pulses to the memory cell. Yet another concern with programming memory cell parameters is wide memory cell distributions that occur as a result of applying fixed programming pulses to memory cells of a memory device, which results in less control over the performance of the memory device (e.g., when over programming occurs).
It is therefore desirable to have systems and methods that improve the programming performance of memory devices, i.e., reduce memory cell programming time, increase memory device reliability, reduce memory cell over programming, and tighten memory cell distributions.